This application relates to hard disc drives and more particularly to an apparatus and method for optimizing seeks using linear velocity scheduling.
In a disc drive data is recorded on a disc in concentric, circular paths known as tracks. During operation the disc continually rotates and a read/write head a given radius from the center of the disc would read or write data in a given track. An actuator arm swings the head in an arc across the disc surface to allow the head to read or write data in different tracks.
The read/write head is mounted upon the distal end of the actuator arm, and the arm is moved by a servo control system. Accordingly, the track position of the head is controlled by the servo system. When the head needs to access a different track, the actuator arm swings the head to the desired track location. The motion of the head from one track to another includes an acceleration and a deceleration phase, and the period during which head movement occurs is known as the seek time. For drive performance, it is desirable to minimize the seek time.
In a conventional disc drive, the movement of the actuator arm is controlled by feedforward and feedback control systems. The control process typically works as follows. A ROM (read only memory) look-up table possesses a velocity profile that indicates the target velocity of the head, given the head""s distance from the desired track. Such a table assumes a nominal rate of deceleration. Typically, the table yields a target velocity for a given distance parameter based upon the relationship v(x)=[2ax]xc2xd, where v represents the target velocity, a represents the worst case acceleration, and x represents the distance that the head must travel, along an arc centered about the arm""s pivot point, to reach its desired track position. The table is necessary because computing the velocity in real time is too processor intensive since the calculation is not linear. The target velocity is typically limited to some maximum value, vmax.
Referring to FIG. 8, a prior art control system 900 is illustrated. A target velocity process 902 produces a target velocity 934 by finding from the displacement signal 932 the distance remaining to the target track. This distance is looked-up in a velocity profile stored in ROM 936 to find the target velocity value 934. The velocity profile has been pre-determined according to the square root equation. The target velocity value 934 is fed to summation process 904 along with the actual velocity 928 that has been measured. The actual velocity is subtracted from the target velocity to produce an error quantity 906. The error quantity 906 is amplified by scaling process 908 to produce an error value 910. Summation process 912 combines the error value 910 with a feedforward signal 938 to produce an error current value 914. The error current value is amplified by scaling process 916 to produce a driving current 920. The driving current 920 is fed into the servomechanism where it is converted to acceleration 924 by conversion process 922. The acceleration 924 is converted to velocity 928 by integration process 926, and the velocity 928 is converted to displacement 932 by integration process 930.
When movement begins, the arm is accelerated with the maximum torque possible. At intervals, the control system 900 gathers information regarding the actual velocity 928 of the head, and the head""s distance 932 from the desired track position. Using the distance measurement, the ROM table 936 is accessed to retrieve a target velocity for the arm and thus the head. Once the target velocity 934 has been found in the table, the difference 906 between the target velocity 934 and the actual velocity 928 of the head is found. Acceleration continues until the actual velocity 928 of the head nears the target velocity, or vmax, whichever is lower. As the distance 932 to the desired track decreases, the target velocity 934 will in turn decrease based on the square root equation. Deceleration begins when the target velocity 934 is lower than the actual velocity 928.
During deceleration, the control system 900 once again periodically gathers information regarding the actual velocity 928 of the head, and the head""s distance 932 (again, measured along an arc centered about the arm""s pivot) from the desired track position. Using the distance measurement 932, the ROM table 936 is accessed to retrieve the target velocity 934 of the head. As in the case of acceleration, calculating the velocity 934 in real time is too processor intensive and requires the table 936 to be used instead. Once the target velocity 934 has been found in the table 936, the difference 906 between the target velocity 934 and the actual velocity 928 of the head is found. If the velocity 928 of the head exceeds the target velocity 934, the servo system is fed with a current 920 that is proportional to the difference 906 between the head""s actual 928 and target velocity 934, and a resulting torque will be applied to the actuator arm, decelerating the arm. Deceleration continues until the head comes to rest at the desired track position.
This conventional scheme requires referencing the look-up table stored in ROM 936 because calculating the target velocity 934 in terms of distance is a non-linear, processor intensive task when constant acceleration is being applied. If the control system was able to calculate a target velocity 934 in real time, then the expensive ROM space required for the look-up table would be considerably reduced in size.
The method and apparatus in accordance with the present invention solves the aforementioned problem and other problems of producing a disc drive with an optimal seek operation. The seek operation method begins by accelerating the actuator arm of the disc drive with maximum torque. Once the acceleration has begun, a distance from the current actuator position to the desired position is determined. This distance may be determined by comparing the current position with the desired position as indicated by the command received by the disc drive from the host computer. The optimum time required to seek from the current track over the obtained distance to the desired track is acquired. This time is determined by detecting that a servo sample period has elapsed and adding the servo sample period to an initial optimum time that if stored as a negative value or subtracted from the initial optimum time if stored as a positive value. The target velocity is found from the distance to the desired track and the optimum time to seek there. The target velocity can be generated from the optimum time to reach the target for the distance to the target by finding a first target velocity component. This component is computed by scaling a zero velocity acceleration by the optimum time. A second target velocity component is obtained by scaling the distance to the target track by the mechanical motor time constant. The target velocity is then found by comparing the second component to the first component. The velocity of the head may be obtained, and then compared to the target velocity to produce an error quantity. The error quantity is multiplied by a constant to produce an error value. The error value is then combined with a feedforward quantity and a proportional error current is produced which is fed into the voice coil motor attached to the actuator arm.
The seek operation apparatus includes a voice coil motor, which is used to apply torque to an actuator arm. A transducer is coupled to the actuator arm so that it produces a signal representative of the position of the head. A microprocessor is operably connected to the transducer and to the ROM possessing acceleration and motor time constants. The microprocessor generates the actual velocity of the actuator arm from the position signal, and utilizes the position signal and the command to determine the head""s distance to the desired track. The stored initial optimum time and the elapsed servo sample period are used to calculate a remaining optimum seek time for each sample point. The target velocity is then computed by scaling the zero velocity acceleration constant by the optimum seek time and scaling the head""s distance to the desired track by the mechanical motor time constant. The microprocessor compares the actual velocity with the target velocity to produce an error quantity. The error quantity is multiplied by a constant to produce an error value. The microprocessor then combines the error value with a feedforward signal to produce a current error value, and then converts the current error value into an analog signal, which a power amplifier receives. The power amplifier then magnifies the analog signal to drive the voice coil motor.
Determining the distance to the desired track and the optimum time to seek to the desired track at each velocity sampling time and then performing the target velocity calculation based upon those determined values enables the disc drive to eliminate the target velocity look up table which would otherwise occupy valuable ROM space.